package pl.smath.expression;

import pl.smath.expression.number.RealNumber;

public class NumberTerm extends Term{

	private float value;
	
	/**
	 * Construktor
	 * @param text
	 */
	public NumberTerm(String text) {
		super(text);
		
		value = Float.parseFloat(text);
	}

	
	/**
	 * Construktor
	 * @param text
	 */
	public NumberTerm(float v) {
		super(RealNumber.toString(v));
		
		value = v;
	}

	
	/**
	 * @return tekst wyrażenia
	 */
	public Term copy(){
		Term term = new NumberTerm(value);
		
		return term;
	}


	/**
	 * Pobranie wartosci wyrazenia.
	 * @return
	 */
	public float getValue() {

		return isNegative() ? -value : value;
	}
	
	/**
	 * Sprawdzenie czy 2 wyrazenia sa sobie równowazne.
	 * Czyli czy mozna postawic miedzy nimi znak = (w sensie matematycznym)
	 * Np. ponizsze wyrazenia sa rownowazne
	 * c*(a+b) i (b+a)*c
	 */
	public boolean isTheSame(Term term){
		
		if(term instanceof NumberTerm){
			return ((NumberTerm)term).getValue() == getValue();
		}
		
		return false;
	}
	
	
}
